#ifndef __KERNEL_CONFIG_H__
#define __KERNEL_CONFIG_H__

#define PHY_MEM_START   				0x80000000
#define PHY_MEM_SIZE					0x20000000
#define PHY_MEM_END       				(PHY_MEM_START + PHY_MEM_SIZE - 1)

#define IRQ_STACK_SIZE                  0x100000
#define FIQ_STACK_SIZE                  0x100000
#define SYS_STACK_SIZE                  0x100000
#define SVC_STACK_SIZE                  0x100000
#define ABT_STACK_SIZE                  0x100000
#define UND_STACK_SIZE                  0x100000
#define STACK_BUFF_SIZE                 0x100000  //栈和TLB之间的缓冲区

#define GLOBAL_TLB_SIZE                 0x100000

#define DEFAULT_KERNEL_SIZE             (0x500000)
#define PAGE_TABLE_SIZE                 0x200000
#define MEM_BIT_MAP_SIZE                0x300000

#define RESERVED_AREA0_START            PHY_MEM_START
#define RESERVED_AREA0_SIZE             (DEFAULT_KERNEL_SIZE + IRQ_STACK_SIZE + FIQ_STACK_SIZE + SYS_STACK_SIZE + SVC_STACK_SIZE + ABT_STACK_SIZE + UND_STACK_SIZE + STACK_BUFF_SIZE + GLOBAL_TLB_SIZE)

#define RESERVED_AREA1_START            (PHY_MEM_START + DEFAULT_KERNEL_SIZE + IRQ_STACK_SIZE + FIQ_STACK_SIZE + SYS_STACK_SIZE + SVC_STACK_SIZE + ABT_STACK_SIZE + UND_STACK_SIZE + STACK_BUFF_SIZE + GLOBAL_TLB_SIZE)
#define RESERVED_AREA1_SIZE             (PAGE_TABLE_SIZE + MEM_BIT_MAP_SIZE)

#define TASK_STACK_SIZE					0x2000

#define MAX_TASK_NUM                    128

#define MAX_UDP_LINK_NUM				64
#define MAX_TCP_LINK_NUM				64


//#define TLB_BASE                        (PHY_MEM_START + DEFAULT_KERNEL_SIZE + IRQ_STACK_SIZE + FIQ_STACK_SIZE + SYS_STACK_SIZE + SVC_STACK_SIZE + ABT_STACK_SIZE + UND_STACK_SIZE + STACK_BUFF_SIZE)
//#define TLB_BASE   0x00900000

extern unsigned long get_phy_memory_size(void);

#endif 


